#include "StdAfx.h"
#include "astuffman.h"
#include "Aobj.h"

int AobjStore::add( Aobj * obj)
{
	if( isExist(obj) )
		return -1;
	//
	mobjs.push_back(obj);

	return 0;
}

int AobjStore::find( Aobj * obj)
{
	int idx = -1;
	for( int i=0; i<mobjs.size(); i++)
		if( mobjs[i] == obj)
		{
			idx = i;
			break;
		}
	/*list<Aobj*>::iterator it;
	int i=0;
	for( it = mobjs.begin(); it != mobjs.end(); it++, i++)
	{
		if( *it == obj )
		{
			idx = i;
			break;
		}
	}*/
	return idx;
}
Aobj * AobjStore::get(int idx)
{
	Aobj * obj = NULL;
	if( idx < 0  || idx>= mobjs.size() )
		return obj;
	else
		return mobjs[idx];
}
void AobjStore::del(int idx)
{
	if( idx >=0)
	{
		mobjs.erase(mobjs.begin() + idx);
	}
}

// -------------------------------------
void AobjCreater::delAll()
{
	Aobj * obj; 
	// reverse sequence;
	for( int i = mobjs.size()-1; i>=0; i--)
	{
		obj = mobjs[i];
		if( obj )
		{
			delete obj;
		}
	}
	mobjs.clear();
}
int AobjInit::initAll()
{
	int ret = 0;
	Aobj * obj;
	for( int i=0; i< mobjs.size(); i++)
	{
		obj = mobjs[i];
		if( obj)
		{
			if( obj->ainit() < 0) 
				--ret;
		}
	}
	return ret;
}
void AobjInit::exitAll()
{
	Aobj * obj;
	// reverse sequence;
	for( int i = mobjs.size()-1; i>=0; i--)
	{
		obj = mobjs[i];
		if( obj)
		{
			obj->aexit();
		}
	}
	mobjs.clear();
}

// ----------------------------------
AobjEnterCount::AobjEnterCount()
{
	for( int i=0; i< 10; i++)
		mcount[i] = 0;
}

// ----------------------------------
int AstuffMan::checkCounterOnStart()
{
	if(!mobjrun->isRun())
	{
		mobjcounter.reset();
	}
	return mobjcounter.incCount();
}
int AstuffMan::checkCountOnStop()
{
	if(mobjrun->isRun())
		mobjcounter.decCount();
	return mobjcounter.getCount();
}